package gin_http

import (
	"gitee.com/captials-team/ubdframe/src/common/consts"
	"gitee.com/captials-team/ubdframe/src/domain/dto"
	"github.com/gin-gonic/gin"
)

// SetAuth 设置auth信息
func SetAuth(ctx *gin.Context, auth *dto.AuthDataPacket) {
	ctx.Set(consts.AuthInfoContextKey, auth)
}

// GetAuth 获取auth信息
func GetAuth(ctx *gin.Context) dto.AuthInfo {
	return GetAuthDataPacket(ctx).Auth
}

// GetAuthDataPacket 获取存储的auth数据包
func GetAuthDataPacket(ctx *gin.Context) *dto.AuthDataPacket {
	tmp, _ := ctx.Get(consts.AuthInfoContextKey)
	if tmp == nil {
		return &dto.AuthDataPacket{}
	}
	return tmp.(*dto.AuthDataPacket)
}

// GetOperateLog 获取操作日志，返回：
//
//	log，日志内容
//	ok，是否需要记录
func GetOperateLog(ctx *gin.Context) (string, bool) {
	if log, exist := ctx.Get(consts.OperateLogContextKey); exist && log != nil {
		return log.(string), true
	}
	return "", false
}

// SetOperateLog 手动配置操作日志
func SetOperateLog(ctx *gin.Context, log ...string) {
	if _, exist := ctx.Get(consts.OperateLogContextKey); !exist && len(log) > 0 {
		ctx.Set(consts.OperateLogContextKey, log[0])
	}
}
